/**********************老师信息管理模块*********************/
function teacherMgrFn (node, event) {
	if (node.isLeaf()) {		//判断点击的是树的叶子节点
    	event.stopEvent();
    	
    	//获取点击的菜单项的id
       	var node_id = node.id;
       	//获取被点击的菜单项的text
       	var node_text = node.text;
       	
       	if (node_id == 'all_teacher') {			//浏览所有老师
       		
       		//从TabPanel获取此id的对象，看看tab是否已经打开
         	var tab = Ext.getCmp("center_part").getComponent(node_id);		         	
         	
           	if (!tab) {				//如果没有打开			
           		
           		//显示等待保存的提示信息
        		Ext.MessageBox.show({
        				title: '请等待',
                        msg: '正在加载，请稍等...',
                        progress: true,								        
				        width: 260,
				        wait:true,
				        icon: 'mb_download_icon',
				        animEl: 'saving',
				        waitConfig: {
				        	interval: 200,  //interval进度的频率
				        	duration: 1000,	//执行进度的持续时间，超过这个时间后，interval失效，不再产生进度效果，但进度框也不会消失。
							fn: function(){	//时间到后执行
                             	Ext.MessageBox.hide();	//让进度条消失
                            }
				        }
                });
           		
           		/********弹出窗口(修改老师信息和新添老师共用)********/
           		/*弹出窗口*/
				//所属专业的ComboBox定义
				var major_data = [
			        ['1','自动化'],
			        ['2','电子信息工程'],
			        ['3','电气工程及其自动化'],
			        ['4','通信工程']
			    ];							
			    var major_store = new Ext.data.SimpleStore({
			        fields: ['value', 'text'],
			        data: major_data
			    });
			    							    
				//创建Teacher表单
				var teacherForm = new Ext.form.FormPanel({
			        labelAlign: 'right',
			        labelWidth: 80,
			        frame: true,
			        defaultType: 'textfield',						        
			        items: [{
			        	//保存老师id的隐藏域，用于修改老师信息用
			        	xtype: 'hidden',
			        	name: 'id'
			        }, {
			        	xtype: 'fieldset',
						title: '基本信息',
						autoHeight: true,
						defaultType: 'textfield',
						//统一设置宽度和验证
				        defaults: {
				        	width: 170,
				        	//不为空
					        allowBlank: false
				        },									
						items: [{
				            fieldLabel: '姓名',
				            name: 'name',
				            //最大长度
				            maxLength: 4,
				            //最小长度
				            minLength: 2,
				            //只能输入汉字（使用自定义的验证）
				            regex: /^[\u4E00-\u9FA5]+$/,
							regexText: '只能输入汉字'
				        },{
				            fieldLabel: '性别',
							xtype: 'combo',
							name: 'sex',
							width: 80,
							hiddenName: 'sex',
							store: new Ext.data.SimpleStore({
						        fields: ['value', 'text'],
						        data: [
							        ['男','男'],
							        ['女','女']
							    ]
						    }),
						    emptyText: '选择性别',
				            mode: 'local',
				            triggerAction: 'all',								            
					        valueField: 'value',
					        displayField: 'text',
					        //不允许用户填写
					        readOnly: true
				        },{
				            fieldLabel: '登陆账号',
				            name: 'nickname',
				            //最大长度
				            maxLength: 11,
				            //最小长度
				            minLength: 4,
				            //只能输入字母和数字
				            vtype: 'alphanum'
				        },{
				            fieldLabel: '密码',
				            name: 'password',
				            //最大长度
				            maxLength: 12,
				            //最小长度
				            minLength: 4,
				            //只能输入字母和数字
				            vtype: 'alphanum'
				        },{
				        	id: 'major',
				        	xtype: 'combo',
				            fieldLabel: '所属专业',
				            name: 'major',
				            hiddenName: 'majorId',
				            store: major_store,
				            emptyText: '选择所属专业',
				            mode: 'local',
				            triggerAction: 'all',								            
					        valueField: 'value',
					        displayField: 'text',
					        //不允许用户填写
					        readOnly: true
				        }]						     
			        }]							        
			    });
				//定义弹出窗口
				var teacher_win = new Ext.Window({
					id: 'teacher_win',
					title: '添加新老师',
			        width:350,
			        height:250,
			        //设置当点击X按钮时候，是隐藏还是销毁
			        closeAction:'hide',
			        //不允许超出浏览器范围
			        constrain: true,
			        //开启蒙板效果
			        modal: true,
			        buttonAlign: 'center',
			        items: [teacherForm],
			        buttons: [{
				       	text:'保存',
				       	iconCls: 'submit_icon',
				       	//提交表单
				       	handler: function () {
				       		//如果表单验证成功，则显示保存的等待，和提交form
				       		if (teacherForm.getForm().isValid()) {
				       			//提交表单
				       			teacherForm.getForm().submit({
				        			success: function (teacherForm, action) {
				        				Ext.Msg.alert("操作结果", action.result.msg);
				        				//重置teacherForm中的数据
				        				teacherForm.reset();
				        				//关闭窗口（隐藏）
				        				teacher_win.hide();
				        				//刷新表格数据，看看修改或添加效果
				        				mgr_tch_grid.getStore().reload();
				        			},
				        			failure: function (teacherForm, action) {
				        				Ext.Msg.alert("操作结果", action.result.msg);
				        			}
				        		});
				       			//显示等待保存的提示信息
				        		Ext.MessageBox.show({
				        				title: '请等待',
	                                    msg: '正在保存，请稍等...',
	                                    progress: true,								        
								        width: 240,
								        wait:true,
								        icon: 'mb_waiting_icon',
								        animEl: 'saving',
								        waitConfig: {
								        	interval: 200,  //interval进度的频率
								        	duration: 1000,	//执行进度的持续时间，超过这个时间后，interval失效，不再产生进度效果，但进度框也不会消失。
											fn: function(){	//时间到后执行
			                                 	Ext.MessageBox.hide();	//让进度条消失
			                                }
								        }
	                            });
				       		}	
			        	}						       	 	
			        }, {
			        	text:'重置',
			        	iconCls: 'reset_icon',
			        	handler: function () {
			        		teacherForm.getForm().reset();
			        	}	
			        }, {
			        	text:'取消',
			        	iconCls: 'revoke_icon',
			        	handler: function () {
			        		teacher_win.hide();
			        	}	
			        }]
			    });
           		/*******弹出窗口(修改老师信息和新添老师共用)结束**********/
           		
           		
           		/****************管理老师的所有处理函数****************/						    
			    
			    /*****添加老师的处理函数*******/
				var add_teacher = function() {
					//修改form的提交地址
					teacherForm.getForm().url = 'mgr_teacher.do?cmd=add';	
					teacherForm.getForm().reset();	
					teacher_win.setTitle("添加新老师");		
				    teacher_win.show();								
				}
				/*****添加老师的处理函数结束*******/
				
				/*****编辑老师的处理函数*******/							
				var edit_teacher = function () {
				
					//获取表格中选中的那行（使用getSelected()只选择选中的多个行的第一行）返回的是Record类型
					var selectedCol = mgr_tch_grid.getSelectionModel().getSelected();
					
					if (selectedCol == undefined) {				//如果没有选择任何一行
					
						Ext.Msg.alert("错误提示", "请选择一行你要编辑的记录！");
						
					} else {									//选择的行处理								
						
						//修改form的体交地址
						teacherForm.getForm().url = 'mgr_teacher.do?cmd=modify';
						teacher_win.setTitle("修改老师信息");
						teacher_win.show();	
						
						/***注意，一定要先显示窗口，以及其中的From在给Form设值，才可以****/
						
						//把表格中选中行的数据填充到表单中，并显示Window							
						teacherForm.getForm().setValues({
							id: selectedCol.get("id"),
							name: selectedCol.get("name"),
							sex: selectedCol.get("sex"),
							nickname: selectedCol.get("nickname"),
							password: selectedCol.get("password"),
							major: selectedCol.get("major_id")
						});
					}
												
				}														
				/*****编辑老师的处理函数结束*******/							
				
				/*****删除老师的处理函数*******/							
				var del_teacher = function () {		
				
					//获取表格中选中的所有行（使用getSelections()只选择选中的多个行）返回的是Record类型的数组
					var selectedCols = mgr_tch_grid.getSelectionModel().getSelections();
					//返回数组的长度，判断用户是否选择
					var length = selectedCols.length;
					
					if (length == 0) {				//如果没有选择任何一行
						Ext.Msg.alert("错误提示", "请选择你要删除的记录！");
					} else {									//选择的行处理
						
						//先提醒用户是否要删除
						Ext.Msg.confirm("提醒信息", "你确定要删除你选择的记录吗？", function(btn) {
							//如果用户确定删除
							if (btn == 'yes') {
								//把要删除的所有选中的id组装字符串，传递到后台处理（数组形式）
								var goBackStr = "";
								for (var i = 0; i < length; i++) {
									var col = selectedCols[i];
									if (i==0) {
										goBackStr = goBackStr + col.get("id");
									} else {
										goBackStr = goBackStr + "," + col.get("id");
									}
								}
								
								//发送到后台处理
								Ext.Ajax.request({
									url: 'mgr_teacher.do?cmd=delete',
									success: function(response) {
										var obj = Ext.decode(response.responseText);
										if (typeof(obj) != 'undefined') {
											if (obj.result == 'success') {
												Ext.Msg.alert("操作结果", "恭喜，删除老师成功！");
												//刷新表格数据，看看删除效果
					        					mgr_tch_grid.getStore().reload();
											} else {
												Ext.Msg.alert("操作结果", "抱歉，删除老师失败！请重新尝试！");
											}
										} else {
											Ext.Msg.alert("操作结果", "抱歉，删除老师失败！请重新尝试！");
										}
										
									},
									failure: function() {
										Ext.Msg.alert("操作结果", "抱歉，删除老师失败！请重新尝试！");
									},
									params: {delStr: goBackStr}										
									
								});
							}							
						});
					}
												
				}														
				/*****删除老师的处理函数结束*******/
				
				/****************管理老师的所有处理函数结束****************/
           		
           		
           		/*****************表格定义*********************/
           		//表格列样式
           		//添加复选功能（即SelectModel对象）
           		var mgr_tch_sm = new Ext.grid.CheckboxSelectionModel({
           			//取消此对象自带的，单击某行选中的功能
           			handleMouseDown: Ext.emptyFn()
           		});
           		//定义表格的行列格式
           		var mgr_tch_columns = new Ext.grid.ColumnModel([
           			//加上行号
           			new Ext.grid.RowNumberer(),
           			//添加复选功能（即SelectionModel对象）
           			mgr_tch_sm,
			        {header: '编号', dataIndex: 'id'},
			        {header: '姓名', dataIndex: 'name'},
			        {header: '性别', dataIndex: 'sex', renderer: sexRenderer},
			        {header: '登陆账号', dataIndex: 'nickname'},
			        {header: '密码', dataIndex: 'password'},
			        {header: '所属专业', dataIndex: 'major'},
			        {header: '专业编号', dataIndex: 'major_id'}
			    ]);
			    mgr_tch_columns.defaultSortable = false;		
			    				
           		//表格数据格式
           		var teacherRecord = Ext.data.Record.create([
			        {name: 'id', type: 'int'},
			        {name: 'name', type: 'string'},
			        {name: 'sex', type: 'string'},
			        {name: 'nickname', type: 'string'},
			        {name: 'password', type: 'string'},
			        {name: 'major', type: 'string'},
			        {name: 'major_id', type: 'int'}
			    ]);
           		
           		//到后台获取数据库中的数据,用于填充表格
           		var mgr_tch_store = new Ext.data.Store({
			        proxy: new Ext.data.HttpProxy({url: 'mgr_teacher.do?cmd=show'}),
			        reader: new Ext.data.JsonReader({
			            totalProperty: 'totalCount',
			            root: 'result'
			        },teacherRecord)
			        //remoteSort: true
			    });
			    //加载数据，并发送参数到服务器端
			    mgr_tch_store.load({params:{start:0, limit:15}});																	    
			    
                //表格定义
           		var mgr_tch_grid = new Ext.grid.GridPanel({
           			//title: '浏览老师信息',
           			//遮罩提示功能
           			loadMask: true,
           			store: mgr_tch_store,
           			cm: mgr_tch_columns,
           			//添加复选功能（即SelectionModel对象）
           			sm: mgr_tch_sm,
           			//禁止多选，（ctrl和shift都不管用了）
			        //sm: new Ext.grid.RowSelectionModel({singleSelect:true}),
			        //使得表格强制fit父容器
			        viewConfig: {
			            forceFit: true
			        },
			        //添加顶端的工具栏
			        tbar: [{ 								
						text: '添加',
						iconCls:'add_icon', 
						tooltip:'添加老师', 
						handler:add_teacher
					},'-',{ 
						text: '编辑',
						iconCls:'edit_icon', 
						tooltip:'编辑选中老师', 
				        handler: edit_teacher
					},'-',{ 
						text: '删除',
						iconCls:'del_icon', 
						tooltip:'删除选中老师', 
				        handler: del_teacher
					},'-',{ 
						text: '刷新',
						iconCls:'flush_icon', 
						tooltip:'刷新本页内容', 
				        handler: function() {
				            mgr_tch_grid.getStore().reload();
				        }
					}],
           			//添加底部分页条（bbar-->bottom bar）
	                bbar: new Ext.PagingToolbar({
	                	pageSize: 15,
			            store: mgr_tch_store,
			            displayInfo: true,
			            displayMsg: '显示第 {0} --> {1} 条记录，共 {2} 条记录',
			            emptyMsg: "没有记录"
	                })
	            });
           		/*****************表格定义结束*********************/
           		
           		/***************添加此表格到TabPanel***************/
           		tab = Ext.getCmp("center_part").add({
           			//使用点击菜单的id，这样方便事件处理
			        id: node_id,
			        //标题为被点击的菜单项的text
			        title: node_text,
                    closable:true,
                    iconCls: 'nor_icon',
                    autoScroll:true,
                    layout: 'fit',
                    items: [mgr_tch_grid]
           		});		  
			    /***************添加此表格到TabPanel结束***************/						    
           	}	
           	//设置此新增Tab为活动的Tab
			Ext.getCmp("center_part").setActiveTab(tab);	           
       	} 
   	}
}
/***********************老师信息管理模块结束*********************/